class Solution {
    public:
        int numberOfArithmeticSlices(vector<int>& nums) {
            int n = nums.size();
            if(n < 3) return 0;
            vector<int> dp(n); //以i位置为结尾一共有多少个等差子数组
            dp[2] = nums[1]*2 == nums[0]+nums[2] ? 1 : 0;
            int ret = dp[2];
            for(int i = 3 ; i < n ; i++){
                dp[i] = nums[i-1]*2==nums[i]+nums[i-2] ? dp[i-1]+1 : 0;
                ret +=dp[i];
            }
            return ret;
        }
    };